/**
 * @作者 伟子涵
 * @微信公号 搬砖暗夜码农
 * @开源项目 $ https://gitee.com/zhouwei5208888
 * @我的博客 $ http://itzhouwei.com
 * @创建时间 2023/7/14 11:36
 */
package com.itzhouwei.netty.day4;

import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.codec.LineBasedFrameDecoder;
import io.netty.handler.codec.string.StringDecoder;
import io.netty.handler.codec.string.StringEncoder;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;


/**
 * @description:
 * @author：zw，微信：yingshengzw
 * @date: 2023/7/14
 * @Copyright： 公众号：搬砖暗夜码农 | 博客：https://itzhouwei.com - 沉淀、分享、成长，让自己和他人都能有所收获！
 */
@SuppressWarnings("all")
public class MyChannelInitializer extends ChannelInitializer<SocketChannel> {
    @Override
    protected void initChannel(SocketChannel socketChannel)  {


//注意：使用 LineBasedFrameDecoder时，发送的消息结尾一定要是\n（官方是 System.getProperty("line.separator")）
// ，server端 和 client 都必须如此
// * 因为LineBasedFrameDecoder 的工作原理是，依次遍历Bytebuf中的可读字节，判断是否有“\n”或者“\r\n”，如果有则在此位置结束
//        // 基于换行符号 必须需要有 客户端发送消息 \r\n
        socketChannel.pipeline().addLast(new LineBasedFrameDecoder(1024));
        // 解码转String，注意调整自己的编码格式GBK、UTF-8
        socketChannel.pipeline().addLast(new StringDecoder(Charset.forName("UTF8")));
        // 在管道中添加我们自己的接收数据实现方法
        socketChannel.pipeline().addLast(new MyZwServerHandler());

    }
}
